Dynamic Linking of Software Components
نویسنده
چکیده
I n recent years operating systems have again begun to link software libraries to client programs dynamically at execution time. The concepts underlying dynamic linking date back at least to the Multics system 1 of the mid-1960s and have now been reintroduced in some of the most popular workstation and PC operating systems. Operating systems based on modular languages such as Mesa, 2 Modula-2, and Oberon 3 have offered similar capabilities for well over a decade. Indeed, the concept of dynamic linking reached maturity through these modular operating systems, which largely laid the groundwork for dynamic linking's resurgence. Modular systems are written in languages that blur the distinction between libraries and application programs. In these languages, all software consists of modules arranged in a (usually acyclic) dependence hierarchy. Individual modules serve as libraries when they are referenced by clients higher up in the hierarchy and as clients when they reference modules farther down. Consequently, as Figure 1 shows, the hierarchy's inner nodes serve simultaneously as libraries and as clients. In such a system, the operating system is itself represented as a collection of modules at the bottom of the hierarchy. Operating system and application program modules have no intrinsic difference, and the boundary between them is purely conceptual. Because only those parts of the operating system that the application requires at the moment need be present in memory, dynamic linking lets us build powerful systems that consume relatively little storage. Already powerful by itself, dynamic linking is even more useful when it is combined with a language that directly supports software system exten-sibility. An extensible system can evolve without requiring changes in any of its original parts. Combining extensibility with dynamic linking leads to highly flexible systems that use computing resources efficiently because they don't duplicate functionality. Niklaus Wirth recently presented a compelling case for such runtime-extensible software systems. 4 While the central idea behind dynamic linking is quite straightforward, it can be implemented through a surprising variety of strategies. In this article I contrast three simple dynamic linking schemes with two much more elaborate strategies. The latter represent a workload shift from the compiler to the dynamic linker, just as dynamic linking itself represents a shift that moves the functions of a separate linker into the loader. Because the new techniques I describe promise the profound additional benefit of cross-platform portability, they will most likely displace the currently popular …
منابع مشابه
Managing the Evolution of .NET Programs
The component-based model of code execution imposes some requirements on the software components themselves, and at the same time lays some constraints on the modern run-time environment. Software components need to store descriptive metadata, and the run-time system must access this ‘reflectively’ in order to implement dynamic linking. Software components also undergo dynamic evolution whereby...
متن کاملA Server-side Pre-linking Mechanism for Updating Embedded Operating System Dynamically
To allow embedded operating systems to update their components on-the-fly, dynamic update mechanism is required for operating systems to be patched or added extra functionalities in without the need of rebooting the machines. However, embedded environments are usually resource-limited in terms of memory size, processing power, power consumption, and network bandwidth. Thus, dynamic update for e...
متن کاملComponent Adaptation in Contemporary Execution Environments
Because they are required to support component deployment and composition, modern execution environments embody a number of common features such as dynamic linking and support for multiple component versions. These features help to overcome some classical maintenance problems focused largely on component evolution, where successive generations of collaborating components need to be kept collabo...
متن کاملFlexible , source level dynamic linking and re - linking � – Work in Progress –
We give a formal semantics for dynamic linking and re-linking of code. The semantics is at source language level, and allows linking at a finer grain than current Java or C# implementations: Besides supporting the loading and verification of classes interleaved with program execution, it also allows type-safe removal and replacement of classes, fields and methods. Such extended features support...
متن کاملCulture and Identity: Linking Iranian Identity Components and Cultural Dimensions
Iranian identity cannot be conceived of as a uniform monolithic concept. But, thanks to certain upheavals in the history of the country, it has turned into the triple concept of national/Islamic/modern. Hofstede’s (2001) cultural framework represents a well-validated operationalization of culture based on six cultural dimensions (power distance, individualism/collectivism, masculinity/feminini...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- IEEE Computer
دوره 30 شماره
صفحات -
تاریخ انتشار 1997